#include <iostream>
#include <fstream>
#include "SortingConfig.h"

using namespace std;

void swap(int &a, int &b) {
    int t=a;
    a = b;
    b = t;
}

void insertion_sort(int *arr, int n) {
    // 插入排序算法
    for (int i=1; i<n; ++i) {
        for(int j=i; j>0; --j) {
            // 从后向前比较相邻两个元素的大小，
            // 如果后面的数小于前面的数则交换数据
            // 否则结束此轮插入
            if (arr[j-1] > arr[j]) {
                swap(arr[j-1], arr[j]);
            } else break;
        }
    }
}

int main(int argc, char *argv[]) {
    cout << "Sorting Version: " << Sorting_VERSION_MAJOR 
         << "." << Sorting_VERSION_MINOR<<endl;
    // 参数解析
    ifstream input;
    if (argc > 1) {
        input.open(argv[1], ios::in);
    }

    int n;
    if (argc > 1) input >> n;
    else cin >> n;
    int arr[n];
    if (argc > 1){
        for(int i=0; i<n;++i) input >> arr[i];
        input.close();
    } else {
        for(int i=0; i<n;++i) cin >> arr[i];
    }
    // 排序
    insertion_sort(arr, n);

    for(int i=0; i<n; ++i) {
        cout << arr[i] << " ";
    }
    cout << endl;

    return 0;
}